﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("1.计算圆面积 2.计算正方形面积 输入序号");
            int a = int.Parse(Console.ReadLine());
            Shape s;
            switch (a)
            {
                case 1:
                    s = new Circle();
                    break;
                case 2:
                    s = new Square();
                    break;
                default:
                    Console.WriteLine("????");
                    s = new Circle();
                    break;
            
            }
            shape(s);
        }
        public static void test1()
        {
            Console.WriteLine("欢迎来到宠物店，请问你要寄存什么动物：1.猫 2.燕子 3.老鹰 4. 老虎");
            int key = int.Parse(Console.ReadLine());
            Animal a;
            switch (key)
            {
                case 1:
                    a = new Cat();
                    break;
                case 2:
                    a = new yanzi();
                    break;
                case 3:
                    a = new laoying();
                    break;
                case 4:
                    a = new Tiger();
                    break;
                default:
                    Console.WriteLine("别乱写");
                    a = new Tiger();
                    break;
            }
            PetStroy p = new PetStroy();
            p.ConsignAnimal(a);
        }
        public static void test2()
        {
            //       一、编写一个控制台应用程序，接受用户输入的两个整数和一个操作符，以实现对两个整数的加、减、乘、除运算，并显示出计算结果。

            //1、创建Calculate积累，其中包含两个整型的protected成员，用以接收用户输入的两个整数。定义一个DisplayResult()虚方法，计算并输出结果。
            //2、定义四个类继承自Calculate类，分别重写DisplayResult()方法，实现两个整数的加、减、乘、除运算，并输出结果。
            //3、根据用户输入的操作符，实例化相应的类，完成运算并输出结果。
            //4、在主类中添加一个方法，形参为父类对象，根据传递实参的类型，调用方法，实现计算和显示结果。
            Console.WriteLine("+ - * / 请输入算数操作符");
            String a = Console.ReadLine();
            Calculate c;
            switch (a)
            {
                case "+":
                    c = new Add();
                    break;
                case "-":
                    c = new jianfa();
                    break;
                case "*":
                    c = new chenfa();
                    break;
                case "/":
                    c = new chufa();
                    break;
                default:
                    Console.WriteLine("????");
                    c = new Calculate();
                    break;

            }
            Console.WriteLine("请输入第一个值");
            c.Num1 = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入第二个值");
            c.Num2 = int.Parse(Console.ReadLine());
            c.DisplayResult();


        }

        public static void Calc(Calculate c) {
            Console.WriteLine("请输入第一个值");
            c.Num1 = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入第二个值");
            c.Num2 = int.Parse(Console.ReadLine());
            c.DisplayResult();
        }
        public static void test3()
        {
            //二、创建一个Shape（形状）类，此类包含一个名为color的数据成员，用于存储颜色，这个类还包含一个名为GetArea()的虚方法（这个方法是用来获取形状面积的）。
            //基于这个Shape，创建两个子类：Circle（圆形类）和Square（正方形类），Circle类中包含radius（半径）的数据成员，Square类中包含sideLen（边长）的数据成员，这两个子类都去重写父类的GetArea()方法，各自去实现计算自己的面积。

            //在主类中添加一个方法，参数类型就是Shape，方法体中，用形参去调用GetArea()方法。

            //main方法中去测试这个方法。
        }
        public static void shape(Shape s) {
            s.GetArea();
        }

    }
}
